This disclosure relates generally to computer systems, and more particularly to filtering multiple in-memory trace buffers for event ranges before dumping from memory.
An in-memory trace is a common technique for collecting time-based events. The trace collects a configurable set of events in a time ordered way. On large systems, the use of a single trace buffer to collect trace events becomes a scalability performance bottleneck. Therefore, alternative implementations allow trace events to be collected on a per-CPU basis, with separate buffers containing the events for each CPU. Timestamps may be used in post-processing to create a fully time ordered trace to the extent that the timestamps are granular. Collecting traces may involve complex combinations of events that may occur over a long period of time, resulting in large amounts of data. Similarly, a large amount of trace data may be collection when the desired event occurs infrequently. Additionally, the rate of events collected over time may vary considerably since the computer operating system may dispatch work to some CPUs but not to others, especially when there is not enough activity on the computer system to utilize more than a few of the CPUs.
A significant improvement in the usability of the trace may be achieved if the extraction of the trace from memory could exclude the potentially vast set of events which are beyond some configurable age.